<?php
class CategoryModel extends Model{
	public $table='category';
	public $validate=array(
		array('cat_name','nonull','栏目不能为空',2,3),
		// array('cat_name',)
	);
	
	// 添加栏目
	public function addCategory(){
		if($this->create()){
			if($this->add()){
				if($this->updateCache()){
					return true;
				}
			}
		}else{	
			$this->error='添加失败';
		}
	}
	
	//编辑栏目
	public function editCategory(){
		if($this->create()){
			if($this->save()){
				if($this->updateCache()){
					return true;
				}
			}					
		}else{
			$this->error='编辑失败';
		}
	}

	// 删除栏目
	public function delCategory(){
		$cid =Q('cid',0,'intval');
		//获得子栏目
		$sChannel = Data::channelList($this->all(),$cid);
		// p($sChannel);die;
		//array_keys — 返回数组中所有的键名
		$categoryData = array_keys($sChannel);
		// p($categoryData);die;
		//将当前栏目压入
		$categoryData[]=$cid;
		//得到子栏目cid
		$map['cid']=array('IN',$categoryData);
		//获取相对应的栏目的商品
		$goods=M('goods')->where($map)->all();
		// 遍历后调用商品删除方法
		foreach ($goods as $d){
				K('Goods')->delGoods($d['gid']);
		}
		//删除栏目
		$this->where($map)->del();
		// 更新栏目缓存
		return $this->updateCache();
	}
		//获得子栏目 数组,父id,栏目前缀
		// channelLevel($data, $pid = 0, $html = "&nbsp;", 
// $fieldPri = 'cid', $fieldPid = 'pid', $level = 1)

	/**
	 * 更新栏目缓存
	 * @return [type] [description]
	 */
	public function updateCache(){
        /**
         * 读取所有栏目数据
         */
        $data = M('category')->all();
        $cache = array();
        if ($data) {
        	//树状目录结构
            $data = Data::tree($data, 'cat_name');
            foreach ($data as $d) {
                $cache[$d['cid']] = $d;
            }
        }
        if (S('category', $cache)) {
            return true;
        } else {
            $this->error = '缓存更新失败';
        }
    }
	// {
	// 	$data=M('category')->all();
	// 	$data=Data::tree($data,'cat_name');
	// 	foreach($data as $d){
	// 		$cache[$d['cat_name']]=$d;
	// 	}
	// 	return S('category',$cache);
	// }
}